home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / tools / mg / src.lzh / amiga / console.c < prev    next >
C/C++ Source or Header  |  1990-05-23  |  3KB  |  123 lines

  1. /*
  2.  * These functions are taken directly from the console.device chapter in the
  3.  * Amiga V1.1 ROM Kernel Manual.
  4.  */
  5.  
  6. #include <exec/types.h>
  7. #include <exec/io.h>
  8. #include <devices/console.h>
  9. #include <libraries/dos.h>
  10. #include <intuition/intuition.h>
  11. #ifdef LATTICE
  12. #include <proto/all.h>
  13. #else
  14. #include <functions.h>
  15. #endif
  16.  
  17. #undef FALSE
  18. #undef TRUE
  19.  
  20. #include "def.h"
  21. #include "v11.h"
  22.  
  23. /*
  24.  * Open a console device, given a read request and a write request message.
  25.  */
  26.  
  27. int 
  28. OpenConsole(writerequest, readrequest, window)
  29.    struct IOStdReq *writerequest;
  30.    struct IOStdReq *readrequest;
  31.    struct Window  *window;
  32. {
  33.    LONG            error;
  34.    writerequest->io_Data = (APTR) window;
  35.    writerequest->io_Length = (ULONG) sizeof(*window);
  36.    error = OpenDevice("console.device", 0L, (struct IORequest *) writerequest, 0L);
  37.  
  38.    /* clone required parts of the request */
  39.    if (readrequest) {
  40.       readrequest->io_Device = writerequest->io_Device;
  41.       readrequest->io_Unit = writerequest->io_Unit;
  42.    }
  43.    return ((int) error);
  44. }
  45.  
  46. /*
  47.  * Output a single character   to a specified console
  48.  */
  49.  
  50. int 
  51. ConPutChar(request, character)
  52.    struct IOStdReq *request;
  53.    int character;
  54. {
  55. #ifdef   V11
  56.    register int    x;
  57. #endif
  58.    request->io_Command = CMD_WRITE;
  59.    request->io_Data = (APTR) & character;
  60.    request->io_Length = (ULONG) 1;
  61.    DoIO((struct IORequest *) request);
  62.    /* caution: read comments in manual! */
  63.    return (0);
  64. }
  65.  
  66. /*
  67.  * Output a NULL-terminated string of characters to a console
  68.  */
  69.  
  70. int 
  71. ConPutStr(request, string)
  72.    struct IOStdReq *request;
  73.    char           *string;
  74. {
  75. #ifdef   V11
  76.    register int    x;
  77. #endif
  78.    request->io_Command = CMD_WRITE;
  79.    request->io_Data = (APTR) string;
  80.    request->io_Length = (LONG) - 1;
  81.    DoIO((struct IORequest *) request);
  82.    return (0);
  83. }
  84.  
  85. /*
  86.  * Write out a string of predetermined length to the console
  87.  */
  88.  
  89. int 
  90. ConWrite(request, string, len)
  91.    struct IOStdReq *request;
  92.    char           *string;
  93.    int             len;
  94. {
  95. #ifdef   V11
  96.    register int    x;
  97. #endif
  98.    request->io_Command = CMD_WRITE;
  99.    request->io_Data = (APTR) string;
  100.    request->io_Length = (LONG) len;
  101.    DoIO((struct IORequest *) request);
  102.    return (0);
  103. }
  104.  
  105. /*
  106.  * Queue up a read request to a console
  107.  */
  108.  
  109. int 
  110. QueueRead(request, whereto)
  111.    struct IOStdReq *request;
  112.    char           *whereto;
  113. {
  114. #ifdef   V11
  115.    register int    x;
  116. #endif
  117.    request->io_Command = CMD_READ;
  118.    request->io_Data = (APTR) whereto;
  119.    request->io_Length = (LONG) 1;
  120.    SendIO((struct IORequest *) request);
  121.    return (0);
  122. }
  123.